package com.community.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 菜单表
 * </p>
 *
 * @author TangHaoSong Fly ChenJie HeYuHang
 * @since 2024-05-15
 */
@Data
public class Menu implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 菜单ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 菜单名称
     */
    private String name;

    /**
     * 菜单单描述
     */
    private String description;

    /**
     * 上级菜单ID
     */
    private Integer parentId;

    /**
     * 菜单显示顺序
     */
    private Integer sequence;

    /**
     * 对应组件名
     */
    private String component;

    /**
     * 菜单链接地址
     */
    private String url;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 创建时间
     */
    private Date createdAt;

    /**
     * 更新时间
     */
    private Date updatedAt;

    /**
     * 是否可用（0表示可用，1,表示不可用）
     */
    private Integer status;

    /**
     * 是否删除（0表示未删除，1,表示已删除）
     */
    private Integer isDelete;

    @TableField(value = "permissions", exist = false)
    private List<Permission> permissions;

    @TableField(value = "children", exist = false)
    private List<Menu> children;

    public List<Menu> convertPermissionToMenu(List<Permission> permissions) {
        if (permissions == null || permissions.isEmpty()) {
            return null; // 没有权限时直接返回
        }
        List<Menu> permissionMenus = new ArrayList<>();
        for (Permission permission : permissions) {
            Menu permissionMenu = new Menu();
            permissionMenu.setId(permission.getId());
            permissionMenu.setName(permission.getName());
            permissionMenu.setIcon(null);
            permissionMenu.setParentId(3);
            // 其他属性的赋值...

            permissionMenus.add(permissionMenu);
        }
        // 将转换后的子节点赋值给当前对象的 children 属性

        System.out.println("permissionMenus"+permissionMenus);
        return permissionMenus;
    }
}
